package Tipos;

/**
 * Class SignoPuntuacion representa los signos de puntuación,
 * imita a un enumerado de C.
 * 
 * @author Martín Montalvo Martínez
 */
public class SignoPuntuacion{
    
    public static enum signoPuntuacion{PUNTO,COMA,PUNTOCOMA,DOSPUNTOS,PARABI,PARCERRA,
    CORCHEABI,CORCHECERRA,LLAVEABI,LLAVECERRA};
    
    private signoPuntuacion tipo;
    
    public SignoPuntuacion(){
        
    }
    
    /**
     *Crea un signo de puntuación a partir del enumerado
     */
    public SignoPuntuacion(signoPuntuacion signo){
        tipo=signo;
    }
    
    /**
     *Crea un signo de puntuación a partir de su valor en un String.
     *Si el valor del String no casa con ningún valor del enumerado crea por
     *defecto el operador PUNTO(.). A la hora de comparar la cadena no tiene en cuenta
     *las mayúsculas
     */
    public SignoPuntuacion(String signo){
        try{
            if(signo.compareTo(".")==0)
                tipo=signoPuntuacion.PUNTO;
            if(signo.compareTo(",")==0)
                tipo=signoPuntuacion.COMA;
            if(signo.compareTo(";")==0)
                tipo=signoPuntuacion.PUNTOCOMA;
            if(signo.compareTo(":")==0)
                tipo=signoPuntuacion.DOSPUNTOS;
            if(signo.compareTo("(")==0)
                tipo=signoPuntuacion.PARABI;
            if(signo.compareTo(")")==0)
                tipo=signoPuntuacion.PARCERRA;
            if(signo.compareTo("[")==0)
                tipo=signoPuntuacion.CORCHEABI;
            if(signo.compareTo("]")==0)
                tipo=signoPuntuacion.CORCHECERRA;
            if(signo.compareTo("{")==0)
                tipo=signoPuntuacion.LLAVEABI;
            if(signo.compareTo("}")==0)
                tipo=signoPuntuacion.LLAVECERRA;
            //tipo=signoPuntuacion.valueOf(signo);
        }
        catch(IllegalArgumentException a){
            tipo=signoPuntuacion.valueOf("PUNTO");
        }
    }
    
    /**
     *Devuelve el valor del enumerado del signo de puntuación
     */
    public String getTipo(){
        return tipo.toString();
    }
    
    /**
     *Devuelve el resultado de comparar dos signos de puntuación.
     *Si devuelve Cierto son iguales, eoc son distintos
     */
    public Boolean equals(SignoPuntuacion oper2){
        if(tipo.toString()==oper2.toString())
            return true;
        return false;
    }
    
    public static void main(String args[]){
        /*SignoPuntuacion token= new SignoPuntuacion("Barradiv");
        System.out.println(token.getTipo());
        
        SignoPuntuacion token2= new SignoPuntuacion("Inven");
        System.out.println(token2.getTipo());*/
        signoPuntuacion aux;
        
    }
}
